package com.ruoyi.yljf.service.impl;

import java.util.List;
import java.util.Map;

import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.yljf.domain.dto.CreateDTO.MedicalRecordCreateDTO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.yljf.mapper.MedicalRecordMapper;
import com.ruoyi.yljf.domain.MedicalRecord;
import com.ruoyi.yljf.service.IMedicalRecordService;
import javax.annotation.Resource;

/**
 * 医案Service业务层处理
 * 
 * @author metaee
 * @date 2025-02-14
 */
@Service
@AllArgsConstructor
public class MedicalRecordServiceImpl extends ServiceImpl<MedicalRecordMapper, MedicalRecord> implements IMedicalRecordService {

	@Resource
    private final MedicalRecordMapper medicalRecordMapper;
    
    /**
     * 查询医案列表
     * 
     * @param medicalRecord 医案
     * @return 医案
     */
    @Override
    public List<MedicalRecord> selectMedicalRecordList(MedicalRecord medicalRecord) {
    	LambdaQueryWrapper<MedicalRecord> queryWrapper = Wrappers.lambdaQuery();
        if (StringUtils.isNotNull(medicalRecord.getDoctorId())) {
			queryWrapper.eq(MedicalRecord::getDoctorId, medicalRecord.getDoctorId());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getDoctorName())) {
			queryWrapper.like(MedicalRecord::getDoctorName, medicalRecord.getDoctorName());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getRecordName())) {
			queryWrapper.like(MedicalRecord::getRecordName, medicalRecord.getRecordName());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getPatientName())) {
			queryWrapper.like(MedicalRecord::getPatientName, medicalRecord.getPatientName());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getPatientSex())) {
			queryWrapper.eq(MedicalRecord::getPatientSex, medicalRecord.getPatientSex());
		}
        if (StringUtils.isNotNull(medicalRecord.getPatientAge())) {
			queryWrapper.eq(MedicalRecord::getPatientAge, medicalRecord.getPatientAge());
		}
        if (StringUtils.isNotNull(medicalRecord.getPatientWeight())) {
			queryWrapper.eq(MedicalRecord::getPatientWeight, medicalRecord.getPatientWeight());
		}
        if (StringUtils.isNotNull(medicalRecord.getPatientHeight())) {
			queryWrapper.eq(MedicalRecord::getPatientHeight, medicalRecord.getPatientHeight());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getMarital())) {
			queryWrapper.eq(MedicalRecord::getMarital, medicalRecord.getMarital());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getComplain())) {
			queryWrapper.eq(MedicalRecord::getComplain, medicalRecord.getComplain());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getDiagnose())) {
			queryWrapper.eq(MedicalRecord::getDiagnose, medicalRecord.getDiagnose());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getCaseHistory())) {
			queryWrapper.eq(MedicalRecord::getCaseHistory, medicalRecord.getCaseHistory());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getIncision())) {
			queryWrapper.eq(MedicalRecord::getIncision, medicalRecord.getIncision());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getInterrogation())) {
			queryWrapper.eq(MedicalRecord::getInterrogation, medicalRecord.getInterrogation());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getPathology())) {
			queryWrapper.eq(MedicalRecord::getPathology, medicalRecord.getPathology());
		}
        if (StringUtils.isNotEmpty(medicalRecord.getOthers())) {
			queryWrapper.eq(MedicalRecord::getOthers, medicalRecord.getOthers());
		}

        return medicalRecordMapper.selectList(queryWrapper);
    }

	@Override
	public void add(MedicalRecordCreateDTO dto) {
		MedicalRecord medicalRecord = new MedicalRecord(dto);
		medicalRecord.setUserId(SecurityUtils.getUserId());
		medicalRecord.setCreateType("user");
			this.save(medicalRecord);
	}
}
